home *** CD-ROM | disk | FTP | other *** search
/ The World of Computer Software / The World of Computer Software.iso / cmsrc392.zip / ROMSPL.MF < prev    next >
Text File  |  1992-03-30  |  9KB  |  186 lines

  1. % This file contains special letters and letter combinations,
  2. % compatible with the alphabet `{\tt romanl}'.
  3.  
  4. % Codes \0020--\0021 and \0031--\0034 are generated.
  5.  
  6. cmchar "Dotless letter i";
  7. beginchar(oct"020",5u#,x_height#,0);
  8. italcorr x_height#*slant-serif_fit#+.5stem#-2u#;
  9. adjust_fit(serif_fit#+stem_shift# if monospace:+.25u#fi,serif_fit#-stem_shift#);
  10. pickup tiny.nib; pos1(stem',0); pos2(stem',0);
  11. if odd(w-stem'): change_width; fi
  12. lft x1l=hround(.5w-.5stem'); x1=x2;
  13. top y1=x_height if serifs: +min(oo,serif_drop) fi; bot y2=0;
  14. filldraw stroke z1e--z2e;  % stem
  15. if serifs: sloped_serif.l(1,2,a,1/3,.95jut,serif_drop);  % upper serif
  16.  dish_serif(2,1,b,1/3,jut,c,1/3,.9jut); fi  % lower serif
  17. penlabels(1,2); endchar;
  18.  
  19. cmchar "Dotless letter j";
  20. beginchar(oct"021",5.5u#,x_height#,desc_depth#);
  21. italcorr x_height#*slant-serif_fit#+.5stem#-2u#;
  22. adjust_fit(serif_fit#+2stem_shift# if monospace:+.5u# fi,
  23.  serif_fit#-2stem_shift# if monospace:-.5u# fi);
  24. pickup tiny.nib; pos1(stem',0); pos2(stem',0);
  25. rt x1r=hround(.5w+.25u+.5stem'); x1=x2;
  26. top y1=x_height if serifs: +min(oo,serif_drop) fi; bot y2=-1/3d;
  27. filldraw stroke z1e--z2e;  % stem
  28. if serifs: sloped_serif.l(1,2,a,1/3,1.1jut,serif_drop);  % upper serif
  29.  pickup tiny.nib; pos5(vair,-90); pos6(hair,-180); pos7(flare,-180);
  30.  x5=.5[x2,x6r]; bot y5r=-d-oo; y6-.5flare=-.88d;
  31.  if monospace: lft x6r=0 else: z6r=z7r; rt x7l=floor .75u fi;
  32.  (x,y5r)=whatever[z5l,z2l]; x5r:=max(x,.5[x6r,x5]);
  33.  filldraw stroke z2e{down}...z5e{left};  bulb(5,6,7); % arc and bulb
  34. else: pickup fine.nib; pos2'(stem',0); z2'=z2;
  35.  pos6(.2[vair,stem'],-90); pos7(vair,-90);
  36.  lft x7r=hround -.75u; bot y7r=vround 5/6(-d-oo);
  37.  x3r=x1r; top y4r=min(2x_height,h+1);
  38.  (x,y7l)=whatever[z7r,(x1,min(h,asc_height))]; x7l:=x;
  39.  z5r=z2'r; (x2'l,y5l)=whatever[z7l,z5r]; x5l=x2'l; y5=y5r;
  40.  x6r=.5[x7r,x5r]; x6l:=.5[x7l,x5l]; bot y6r=-d-oo;
  41.  filldraw stroke z2'e..{down}z5e & super_arc.e(5,6)
  42.   & term.e(6,7,left,1,4); fi  % arc and terminal
  43. penlabels(1,2,5,6,7); endchar;
  44.  
  45. cmchar "German letter es-zet (sharp s)";
  46. beginchar(oct"031",4.5u#+max(4.5u#,.5stem#+flare#+curve#),asc_height#,0);
  47. italcorr asc_height#*slant-u#;
  48. adjust_fit(serif_fit#,0);
  49. pickup tiny.nib; pos1(stem',0); pos2(stem',0);
  50. lft x1l=lft x2l=hround(2.5u-.5stem'); bot y1=0; y2=y4=.5[x_height,y3];
  51. penpos3(vair-fine,90); fine.top y3r=h+oo;
  52. filldraw stroke z1e--z2e;  % stem
  53. numeric stem_edge,curve'; stem_edge=rt x1r; curve'=hround .5[stem',curve];
  54. pickup fine.nib; pos4(curve',0); pos5(vair,-90);
  55. pos2'(stem',180); z2'=z2; x3=.5[x2,x4]; rt x4r=hround(w-u);
  56. top y5l=x_height; lft x5=min(lft x4l,hround(stem_edge+u));
  57. filldraw stroke pulled_super_arc.e(2',3)(.5superpull)
  58.  & pulled_super_arc.e(3,4)(.5superpull)
  59.  & pulled_super_arc.e(4,5)(.5superpull);  % upper bowl
  60. pos5'(vair,90); z5'=z5; pos6(curve',0); pos7(vair,-90);
  61. rt x6r=hround(w-.5u)+3eps; y6=.4x_height; bot y7r=-oo;
  62. if serifs: pos8(hair,-180) else: pos8(vair,-110) fi;
  63. lft x8r=min(hround(stem_edge+.5u+1),lft x8r+x6r-2eps-x8l);
  64. x7=max(x8l+eps,.4[lft x8r,x6]);
  65. filldraw stroke pulled_super_arc.e(5',6)(.5superpull)
  66.  & pulled_super_arc.e(6,7)(.5superpull);  % lower bowl
  67. if serifs: pos9(5/7[vair,flare],-180);
  68.  y9-(x9-lft x9r)=vround .07x_height; bulb(7,8,9);  % bulb
  69.  penpos0(stem'-tiny,0); x0=x1; tiny.top y0=x_height;
  70.  serif(0,1,a,0,-jut);  % bar
  71.  dish_serif(1,2,b,1/3,jut,c,0,epsilon);  % serif
  72. else: bot y8r=vround .01h; x8l:=good.x x8l; y8l:=good.y(y8l+.5);
  73.  filldraw stroke term.e(7,8,left,1,4); fi  % terminal
  74. penlabels(0,1,2,3,4,5,6,7,8,9); endchar;
  75.  
  76. cmchar "The ligature ae";
  77. beginchar(oct"032",13u#,x_height#,0);
  78. italcorr .5[bar_height#,x_height#]*slant+.5min(curve#-1.5u#,0);
  79. adjust_fit(0,0);
  80. numeric left_curve,right_curve;
  81. if monospace: right_curve=left_curve=fudged.stem;
  82. else: left_curve=max(tiny.breadth,hround(curve-2stem_corr));
  83.  right_curve=max(tiny.breadth,hround(curve-if serifs:6 else:8 fi\\stem_corr));fi
  84. pickup tiny.nib; pos11(right_curve,0);
  85. pos12(vair,90); pos13(mfudged.stem,180);
  86. y11=good.y bar_height; top y12r=h+vround 1.5oo; y10l=bot y11;
  87. rt x11r=hround min(w-.5u,w-u+.5right_curve);
  88. lft x13r=hround (.5w-.5mfudged.stem); x12=.55[x13,x11];
  89. {{interim superness:=more_super;
  90.  filldraw stroke super_arc.e(11,12)}};  % right bowl of e
  91. y13=.5[y12,y14]; bot y14r=-oo; x14=x12+.25u;
  92. if serifs: pos14(vair',270); pos15(mfudged.hair,360);
  93.  y15=max(good.y(.5bar_height-.9),y14l+vair); x15r=x11r;
  94.  (x,y14l)=whatever[z14r,z15]; x14l:=min(x,x14l+.5u);
  95.  filldraw stroke pulled_arc.e(12,13)
  96.   & pulled_super_arc.e(13,14)(.8superpull)
  97.   ...{x15-x14,5(y15-y14)}z15e; % left bowl, arc, and terminal of e
  98. else: pos14(vair,270);
  99.  filldraw stroke super_arc.e(12,13)
  100.   & super_arc.e(13,14);  % left bowl and arc of e
  101.  pickup fine.nib; pos14'(vair,270); z14=z14';
  102.  pos15(.5[vair,flare],275); rt x15r=hround(w-.6u);
  103.  y15r=good.y(y15r+1/3bar_height-y15); y15l:=good.y y15l; x15l:=good.x x15l;
  104.  filldraw stroke term.e(14',15,right,1,4); fi  % right terminal
  105. y11'r=y10r=y10l+.6[thin_join,vair]; y11'l=y10l; x11'l=x11'r=x11; x10l=x10r=x13;
  106. fill stroke z10e--z11'e;  % crossbar
  107. pickup fine.nib; top y3r=h+vround 1.5oo;
  108. if serifs: pos1(flare,180); pos2(mfudged.hair,180);
  109.  pos3(vair,90);  lft x1r=hround max(u,2.1u-.5flare); x3=4u;
  110.  y1=min(bar_height+.5flare+2vair+2,.9[bar_height,h]-.5flare);
  111.  bulb(3,2,1);  % bulb
  112. else: pos1(5/7[vair,flare],95); x1l=good.x 1.5u; x1r:=good.x x1r;
  113.  pos3(1/8[vair,thin_join],90);
  114.  x3=4.3u; top y1r=vround .82[bar_height,top y3r];
  115.  filldraw stroke term.e(3,1,left,.9,4); fi  % left terminal
  116. pos4(mfudged.stem,0); x4=x13; y4=1/3[bar_height,h];
  117. pos5(mfudged.stem,0); x5=x4; y5=min(y4,y13);
  118. filldraw stroke super_arc.e(3,4)&z4e--z5e;  % arc and stem
  119. pos6(.6[thin_join,vair],90); x6=x4; bot y6=y10l;
  120. pos7(left_curve,180);
  121. lft x7r=hround max(.5u,1.5u-.5left_curve); y7=1/3[top y8l,top y6r];
  122. pos8(vair,270); x8l=3.75u; bot y8r=-oo;
  123. pos9(.5[vair,fudged.stem],360); x9=x5; y9=.55bar_height;
  124. (x',y8r)=whatever[z8l,z9l]; x8r:=max(x',x8-u);
  125. {{interim superness:=more_super;
  126.  filldraw stroke z9e{down}...z8e{left}...{up}z7e&super_arc.e(7,6)}}; % bowl
  127. if y9<y5: filldraw stroke z5e{down}..{down}z9e; fi  % link (usually hidden)
  128. penlabels(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15); endchar;
  129.  
  130. cmchar "The ligature oe";
  131. beginchar(oct"033",14u#,x_height#,0);
  132. italcorr .5[bar_height#,x_height#]*slant+.5min(curve#-1.5u#,0);
  133. adjust_fit(0,0);
  134. numeric left_curve,right_curve;
  135. if monospace: right_curve=left_curve=fudged.stem;
  136. else: left_curve=max(fine.breadth,hround(curve-2stem_corr));
  137.  right_curve=max(tiny.breadth,hround(curve-if serifs:6 else:8 fi\\stem_corr));fi
  138. pickup tiny.nib; pos11(right_curve,0);
  139. pos12(vair,90); pos13(mfudged.stem,180);
  140. y11=good.y bar_height; top y12r=h+vround 1.5oo; y10l=bot y11;
  141. rt x11r=hround min(w-.5u,w-u+.5right_curve);
  142. lft x13r=hround (.5(w+u)-.5mfudged.stem); x12=.55[x13,x11];
  143. {{interim superness:=more_super;
  144.  filldraw stroke super_arc.e(11,12)}};  % right bowl of e
  145. y13=.5[y12,y14]; bot y14r=-oo; x14=x12+.25u;
  146. if serifs: pos14(vair',270); pos15(mfudged.hair,360);
  147.  y15=max(good.y(.5bar_height-.9),y14l+vair); x15r=x11r;
  148.  (x,y14l)=whatever[z14r,z15]; x14l:=min(x,x14l+.5u);
  149.  filldraw stroke pulled_arc.e(12,13)
  150.   & pulled_super_arc.e(13,14)(.8superpull)
  151.   ...{x15-x14,5(y15-y14)}z15e; % left bowl, arc, and terminal of e
  152. else: pos14(vair,270);
  153.  filldraw stroke super_arc.e(12,13)
  154.   & super_arc.e(13,14);  % left bowl and arc of e
  155.  pickup fine.nib; pos14'(vair,270); z14=z14';
  156.  pos15(.5[vair,flare],275); rt x15r=hround(w-.6u);
  157.  y15r=good.y(y15r+1/3bar_height-y15); y15l:=good.y y15l; x15l:=good.x x15l;
  158.  filldraw stroke term.e(14',15,right,1,4); fi  % terminal
  159. y11'r=y10r=y10l+.6[thin_join,vair]; y11'l=y10l; x11'l=x11'r=x11; x10l=x10r=x13;
  160. fill stroke z10e--z11'e;  % crossbar
  161. pickup fine.nib; pos1(vair,90); pos3(vair,-90);
  162. pos2(left_curve,180); pos4(mfudged.stem,0);
  163. lft x2r=hround max(.5u,1.25u-.5curve);
  164. z4=z13; x1=x3=.5[x2,x4]; top y1r=h+vround 1.5oo; bot y3r=-oo;
  165. y2=y4; y2l:=y4l:=.52h;
  166. filldraw stroke pulled_arc.e(1,2) & pulled_arc.e(2,3); % left half of left bowl
  167. filldraw stroke pulled_arc.e(3,4) & pulled_arc.e(4,1); % right half of left bowl
  168. penlabels(1,2,3,4,10,11,12,13,14,15); endchar;
  169.  
  170. cmchar "Scandinavian letter o/slash";
  171. beginchar(oct"034",9u#,x_height#+.5desc_depth#,.5desc_depth#);
  172. italcorr h#*slant-u#-max(.5fudge*stem#,.75u#)+.5vair#;
  173. adjust_fit(0,0);
  174. penpos1(vair,90); penpos3(vair,-90);
  175. penpos2(fudged.stem,180); penpos4(fudged.stem,0);
  176. x2r=hround max(.5u,1.25u-.5fudged.stem);
  177. x4r=w-x2r; x1=x3=.5w;
  178. y1r=x_height+vround 1.5oo; y2=y4=.5x_height-vair_corr; y3r=-oo;
  179. penstroke pulled_arc.e(1,2) & pulled_arc.e(2,3)
  180.  & pulled_arc.e(3,4) & pulled_arc.e(4,1) & cycle;  % bowl
  181. x5=x4; x6=x2; y5=h; y6=-d;
  182. numeric theta; theta=angle(z5-z6)-90;
  183. pickup crisp.nib; pos5(vair,theta); pos6(vair,theta);
  184. filldraw stroke z5e--z6e;  % diagonal
  185. penlabels(1,2,3,4,5,6); endchar;
  186.